/* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

京东云视频云应用管理平台接口（仅对授权用户使用）
京东云视频云应用管理平台接口（仅对授权用户使用）

OpenAPI spec version: v1
Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/


#ifndef AmsClient_h
#define AmsClient_h


#import <JDCloudOCSDKCore/JDCloudOCSDKCore.h>
#import <JDCloudOCSDKAms/AmsApiModel.h>

@interface AmsClient : NSObject<JDCloudClient>{
    @private
    NSString* _userAgent;
    NSString* _serviceName;
    NSString* _version;
    }

    @property (strong,readonly,nonatomic) NSString* userAgent;

    @property (strong,readonly,nonatomic) NSString* serviceName;

    @property (strong,readonly,nonatomic) NSString* version;

    @property (strong,nonatomic) NSString* contentType;

    @property (strong,nonatomic) Credential* credential;

    @property (strong,nonatomic) SDKEnvironment* sdkEnvironment;

    @property (strong,nonatomic) NSMutableDictionary* customHeader;

    @property  (strong,nonatomic) NSString* httpRequestProtocol;

    -(void) addCustomerHeaderWithKey:(NSString*) key
    value:(NSString*) value;

    -(id)initWithGlobalConfig;

    -(id)initWithCredential:(Credential*)credential
    sdkEnvironment:(SDKEnvironment*)sdkEnvironment;
    -(id)initWithCredential:(Credential*)credential;
    /**
    describeAuthenticate sync request
    @param describeAuthenticateRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeAuthenticateResponse` the request response data model
    */
    -(NSDictionary*) describeAuthenticateSyncWithRequest:(AmsDescribeAuthenticateRequest*) describeAuthenticateRequest;

    -(void)describeAuthenticateAsyncWithRequest:(AmsDescribeAuthenticateRequest*) describeAuthenticateRequest
    completionHandler:(void(^)(int statusCode,AmsDescribeAuthenticateResponse* _Nullable describeAuthenticateResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeStreamsInput sync request
    @param describeStreamsInputRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeStreamsInputResponse` the request response data model
    */
    -(NSDictionary*) describeStreamsInputSyncWithRequest:(AmsDescribeStreamsInputRequest*) describeStreamsInputRequest;

    -(void)describeStreamsInputAsyncWithRequest:(AmsDescribeStreamsInputRequest*) describeStreamsInputRequest
    completionHandler:(void(^)(int statusCode,AmsDescribeStreamsInputResponse* _Nullable describeStreamsInputResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;

    /**
    ams common sync request
    @param  jdcloudDataRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
    */
    -(NSDictionary*) amsCommonSyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                           url:(NSString*) url
                                        method:(NSString*) method;

    -(void)amsCommonAsyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                  url:(NSString*) url
                               method:(NSString*) method
                    completionHandler:(void(^)(int statusCode, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;

    @end


    #endif /* AmsClient_h */
